package cn.powerone.scm.domain;

import java.math.BigDecimal;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import cn.powerone.common.annotation.Excel;
import cn.powerone.common.core.domain.BaseEntity;

/**
 * 客户年度统计信息-总对象 scm_stats_customer_yearly
 * 
 * @author PowerOne
 * @date 2025-09-09
 */
public class ScmStatsCustomerYearly extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 统计ID */
    private Long id;

    /** 客户ID */
    @Excel(name = "客户ID")
    private Long customerId;

    /** 年份 */
    @Excel(name = "年份")
    private Long year;

    /** 季度(0-4) */
    @Excel(name = "季度(0-4)")
    private Long quarter;

    /** 采购类别(0-4) */
    @Excel(name = "采购类别(0-4)")
    private Long purchaseCategory;

    /** 需求类型(0-9) */
    @Excel(name = "需求类型(0-9)")
    private Long demandType;

    /** 总项目数 */
    @Excel(name = "总项目数")
    private Long totalProjects;

    /** 客户总订单数 */
    @Excel(name = "客户总订单数")
    private Long totalCustomerOrders;

    /** 供应商总订单数 */
    @Excel(name = "供应商总订单数")
    private Long totalSupplierOrders;

    /** 客户总采购金额 */
    @Excel(name = "客户总采购金额")
    private BigDecimal totalCustomerAmount;

    /** 供应商总采购金额 */
    @Excel(name = "供应商总采购金额")
    private BigDecimal totalSupplierAmount;

    /** 客户产品总量 */
    @Excel(name = "客户产品总量")
    private Long totalCustomerQuantity;

    /** 供应商产品总量 */
    @Excel(name = "供应商产品总量")
    private Long totalSupplierQuantity;

    /** 不合格产品总量 */
    @Excel(name = "不合格产品总量")
    private Long totalCustomerDefectiveQuantity;

    /** 不合格产品总量 */
    @Excel(name = "不合格产品总量")
    private Long totalSupplierDefectiveQuantity;

    /** 生产良率(%) */
    @Excel(name = "生产良率(%)")
    private BigDecimal productionYieldRate;

    /** 入库总量 */
    @Excel(name = "入库总量")
    private Long totalStockIn;

    /** 出库总量 */
    @Excel(name = "出库总量")
    private Long totalStockOut;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setCustomerId(Long customerId) 
    {
        this.customerId = customerId;
    }

    public Long getCustomerId() 
    {
        return customerId;
    }
    public void setYear(Long year) 
    {
        this.year = year;
    }

    public Long getYear() 
    {
        return year;
    }
    public void setQuarter(Long quarter) 
    {
        this.quarter = quarter;
    }

    public Long getQuarter() 
    {
        return quarter;
    }
    public void setPurchaseCategory(Long purchaseCategory) 
    {
        this.purchaseCategory = purchaseCategory;
    }

    public Long getPurchaseCategory() 
    {
        return purchaseCategory;
    }
    public void setDemandType(Long demandType) 
    {
        this.demandType = demandType;
    }

    public Long getDemandType() 
    {
        return demandType;
    }
    public void setTotalProjects(Long totalProjects) 
    {
        this.totalProjects = totalProjects;
    }

    public Long getTotalProjects() 
    {
        return totalProjects;
    }
    public void setTotalCustomerOrders(Long totalCustomerOrders) 
    {
        this.totalCustomerOrders = totalCustomerOrders;
    }

    public Long getTotalCustomerOrders() 
    {
        return totalCustomerOrders;
    }
    public void setTotalSupplierOrders(Long totalSupplierOrders) 
    {
        this.totalSupplierOrders = totalSupplierOrders;
    }

    public Long getTotalSupplierOrders() 
    {
        return totalSupplierOrders;
    }
    public void setTotalCustomerAmount(BigDecimal totalCustomerAmount) 
    {
        this.totalCustomerAmount = totalCustomerAmount;
    }

    public BigDecimal getTotalCustomerAmount() 
    {
        return totalCustomerAmount;
    }
    public void setTotalSupplierAmount(BigDecimal totalSupplierAmount) 
    {
        this.totalSupplierAmount = totalSupplierAmount;
    }

    public BigDecimal getTotalSupplierAmount() 
    {
        return totalSupplierAmount;
    }
    public void setTotalCustomerQuantity(Long totalCustomerQuantity) 
    {
        this.totalCustomerQuantity = totalCustomerQuantity;
    }

    public Long getTotalCustomerQuantity() 
    {
        return totalCustomerQuantity;
    }
    public void setTotalSupplierQuantity(Long totalSupplierQuantity) 
    {
        this.totalSupplierQuantity = totalSupplierQuantity;
    }

    public Long getTotalSupplierQuantity() 
    {
        return totalSupplierQuantity;
    }
    public void setTotalCustomerDefectiveQuantity(Long totalCustomerDefectiveQuantity) 
    {
        this.totalCustomerDefectiveQuantity = totalCustomerDefectiveQuantity;
    }

    public Long getTotalCustomerDefectiveQuantity() 
    {
        return totalCustomerDefectiveQuantity;
    }
    public void setTotalSupplierDefectiveQuantity(Long totalSupplierDefectiveQuantity) 
    {
        this.totalSupplierDefectiveQuantity = totalSupplierDefectiveQuantity;
    }

    public Long getTotalSupplierDefectiveQuantity() 
    {
        return totalSupplierDefectiveQuantity;
    }
    public void setProductionYieldRate(BigDecimal productionYieldRate) 
    {
        this.productionYieldRate = productionYieldRate;
    }

    public BigDecimal getProductionYieldRate() 
    {
        return productionYieldRate;
    }
    public void setTotalStockIn(Long totalStockIn) 
    {
        this.totalStockIn = totalStockIn;
    }

    public Long getTotalStockIn() 
    {
        return totalStockIn;
    }
    public void setTotalStockOut(Long totalStockOut) 
    {
        this.totalStockOut = totalStockOut;
    }

    public Long getTotalStockOut() 
    {
        return totalStockOut;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("customerId", getCustomerId())
            .append("year", getYear())
            .append("quarter", getQuarter())
            .append("purchaseCategory", getPurchaseCategory())
            .append("demandType", getDemandType())
            .append("totalProjects", getTotalProjects())
            .append("totalCustomerOrders", getTotalCustomerOrders())
            .append("totalSupplierOrders", getTotalSupplierOrders())
            .append("totalCustomerAmount", getTotalCustomerAmount())
            .append("totalSupplierAmount", getTotalSupplierAmount())
            .append("totalCustomerQuantity", getTotalCustomerQuantity())
            .append("totalSupplierQuantity", getTotalSupplierQuantity())
            .append("totalCustomerDefectiveQuantity", getTotalCustomerDefectiveQuantity())
            .append("totalSupplierDefectiveQuantity", getTotalSupplierDefectiveQuantity())
            .append("productionYieldRate", getProductionYieldRate())
            .append("totalStockIn", getTotalStockIn())
            .append("totalStockOut", getTotalStockOut())
            .append("createTime", getCreateTime())
            .append("updateTime", getUpdateTime())
            .toString();
    }
}
